package cz.vse.adventura.po1715.xforv00_forejt.hra;

import cz.pecinovsky.english.pojj.adv_framework.game_txt.IGame;
import cz.pecinovsky.english.pojj.adv_framework.game_txt.IUI;
import java.io.IOException;
import java.util.logging.Logger;


/*******************************************************************************
 * Třída {@code MainCon} spouští hru v konzolovém režimu
 *
 * @author    Vladimír FOREJT
 * @version   0.00.000
 */
public class MainCon implements IUI
{
    /***************************************************************************
     * @param args Parametry příkazového řádku
     */
    public static void main(String[] args)
    {
        MainCon ui = new MainCon();
        ui.startGame();
    }

    /***************************************************************************
     * Spustí komunikaci mezi zadanou hrou a danou instancí
     * mající na starosti komunikaci s uživatelem.
     *
     * @param hra Hra, kterou ma dané UI spustit
     */
    @Override
    public void startGame(IGame hra) {
        String příkaz = "";
        String odpověď;
        for(;;){                //nekonečný cyklus
            odpověď = hra.executeCommand(příkaz);
            System.out.println(odpověď + "\n> ");
            if (hra.isReady()) {
                break;                  //------------->
            }
            System.out.print("\n> ");
            //vrací string - příkaz, který zadal uživatel:
            příkaz = přečtiŘádek();
        }    
    }

    /***************************************************************************
     * Spustí komunikaci mezi implicitní hrou a danou instancí
     * mající na starosti komunikaci s uživatelem.
     */
    @Override
    public void startGame() {
       Hra hra = Hra.getHra();
       startGame(hra);
    }

    private String přečtiŘádek()
    {
        StringBuilder sb = new StringBuilder();
        int znak;
        try {
            while ((znak = System.in.read()) != '\n') {
                sb.append((char)znak);
            }
        } catch (IOException ex) {
            Logger.getLogger("Chyba na vstupu");
        }
        return sb.toString();
    }
}
